www.gusucode.com > VC++ COleDropTarget扩展类来支持任意窗口拖放,文本拖动-源码程 > VC++ COleDropTarget扩展类来支持任意窗口拖放,文本拖动-源码程序/code/DropButton.cpp
// DropButton.cpp : implementation file // Download by http://www.NewXing.com #include "stdafx.h" #include "dropexdemo.h" #include "DropButton.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // CDropButton CDropButton::CDropButton() { } CDropButton::~CDropButton() { } BEGIN_MESSAGE_MAP(CDropButton, CButton) //{{AFX_MSG_MAP(CDropButton) // NOTE - the ClassWizard will add and remove mapping macros here. //}}AFX_MSG_MAP ON_MESSAGE(DROPM_DRAGOVER,OnDragOver) ON_MESSAGE(DROPM_DROPEX,OnDropEx) ON_MESSAGE(DROPM_DROP,OnDrop) END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CDropButton message handlers BOOL CDropButton::Register() { return m_dropEx.Register( this ); } DROPEFFECT CDropButton::OnDragOver(WPARAM pDropInfoClass, LPARAM lParm) { COleDropInfo* pInfo = (COleDropInfo* )pDropInfoClass; ASSERT(pInfo->IsKindOf(RUNTIME_CLASS(COleDropInfo))); if( pInfo->m_pDataObject->IsDataAvailable( CF_TEXT ) ) return DROPEFFECT_COPY; else return DROPEFFECT_NONE; } DROPEFFECT CDropButton::OnDropEx(WPARAM pDropInfoClass, LPARAM lParm) { return (DROPEFFECT)-1; } BOOL CDropButton::OnDrop(WPARAM pDropInfoClass, LPARAM lParm) { COleDropInfo* pInfo = (COleDropInfo* )pDropInfoClass; ASSERT(pInfo->IsKindOf(RUNTIME_CLASS(COleDropInfo))); if( pInfo->m_pDataObject->IsDataAvailable( CF_TEXT ) ) { HGLOBAL hMem = pInfo->m_pDataObject->GetGlobalData( CF_TEXT ); char* lp = (char *)GlobalLock((HGLOBAL) hMem);//lock source if (lp != NULL) { //Set Windows title with Drop text SetWindowText( lp ); } GlobalUnlock( hMem );//unlock source return TRUE; } else return FALSE; }